package com.ipartek.formacion.net;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

import org.apache.log4j.Logger;

import com.ipartek.formacion.config.Config;

/**
 * Clase para obtener una web en local en un fichero. A partir de ese fichero
 * obtener la informacion deseada.
 * 
 * @author Curso
 * 
 */
public class NetParse {
	private static final Logger log = Logger.getLogger(NetParse.class);

	public NetParse() {
		Config.configurarLog();
	}

	/**
	 * Metodo para conectar a una web
	 * 
	 * @param web
	 *            literal que contiene la pagina a acceder
	 * @return devuelve true si se ha conectado y false en caso contrario
	 */
	public boolean conectar(String web) {
		log.trace("## Inicio de conectar ##");
		if (web != null) {
			try {

				URL url = new URL(web);
			} catch (MalformedURLException e) {

				// excepcion se lamacena en un log
				log.error("[" + web + "] - MalformedURLException: "
						+ e.getMessage());
				return false;

			} catch (Exception e) {
				log.error("[" + web + "] - Exception: " + e.getMessage());
				return false;

			}
			return true;
		}
		log.trace("## Fin de conectar ##");
		return false;
	}

	/**
	 * Metodo que genera un fichero con la inforamc
	 * 
	 * @param nombreFichero
	 *            literal con el fichero a donde volcar la web
	 * @param web
	 *            literal con la web
	 * @return devuelve true si ha generado el fichero y false en caso contrario
	 */
	public boolean generaFicheroDeWeb(String nombreFichero, String web) {
		log.trace("## Inicio de generaFicheroDeWeb ##");
		if (web != null && nombreFichero != null) {
			try {

				URL url = new URL(web);
				BufferedReader dis = null;
				dis = new BufferedReader(
						new InputStreamReader(url.openStream()));
				// DataInputStream dis = new DataInputStream(url.openStream());
				String inputLine;
				BufferedWriter bw = new BufferedWriter(new FileWriter(
						nombreFichero));
				while ((inputLine = dis.readLine()) != null) {
					bw.write(inputLine);
				}
				dis.close();
				bw.close();
			} catch (MalformedURLException e) {

				// excepcion se almacena en un log
				log.error("[" + web + "] - MalformedURLException: "
						+ e.getMessage());
				return false;
			} catch (IOException ioe) {
				log.error("[" + nombreFichero + "] - Exception: "
						+ ioe.getMessage());
				return false;

			} catch (Exception e) {
				log.error("[" + web + "] - Exception: " + e.getMessage());
				return false;

			}
			return true;
		}
		log.trace("## Fin de generaFicheroDeWeb ##");
		return false;

	}
}
